Machine and equipment assets are engineered to perform particular tasks as part of a business process. For example, assets can include, among other things and without limitation, industrial manufacturing equipment on a production line, drilling equipment for use in mining operations, wind turbines that generate electricity on a wind farm, transportation vehicles, and the like. As another example, assets may include devices that aid in diagnosing patients such as imaging devices (e.g., X-ray or MM systems), monitoring equipment, and the like. The design and implementation of these assets often takes into account both the physics of the task at hand, as well as the environment in which such assets are configured to operate.
Low-level software and hardware-based controllers have long been used to drive machine and equipment assets. However, the rise of inexpensive cloud computing, increasing sensor capabilities, and decreasing sensor costs, as well as the proliferation of mobile technologies, have created opportunities for creating novel industrial and healthcare based assets with improved sensing technology and which are capable of transmitting data that can then be distributed throughout a network. As a consequence, there are new opportunities to enhance the business value of some assets through the use of novel industrial-focused hardware and software.
One of the difficulties in designing a computing platform that supports machine and equipment based software is the wide variety of the software in operation within the environment. For example, a power plant operator may be interested in looking at multiple software components (e.g., analytics) related to the plant in order to manage/view various systems, sub-systems, and applications associated therewith, including generators, cooling towers, a plant floor, materials, alerts, fuel usage, power protection, power distribution, control systems, and/or the like. In order to monitor and control these components, independently developed software applications are typically required. These applications are often developed using different programming languages based on a preference of a particular developer or programmer. However, different programming languages often require different runtime environments. Therefore, a challenge exists with respect to managing software interaction with different runtime environments.